package cc.yugu.yhdw.webserver.persistence.hdw;

import cc.yugu.yhdw.common.domain.hdw.BatteryReportLog;
import cc.yugu.yhdw.common.entity.LocationInfo;
import cc.yugu.yhdw.common.persistence.MasterMapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * 电池上报日志信息
 *
 * @Date:Created in 2018/6/29 20:33
 * @Author:
 * @Modified By: zjn 2018/6/29 20:33
 */
public interface BatteryReportLogMapper extends MasterMapper {
    /**
    * 按条件查询表hdw_battery_report_log_${suffix}，返回对应行数。  （suffix：为当前 年月）
    *
    * @Param: [batteryReportLog]
    * @Return: int
    * @Author By: zjn 2018/6/29  20:34
    */
    public int findPageCount(BatteryReportLog batteryReportLog);
    /**
    * 根据指定满足条件查询当前时间表 hdw_battery_report_log_${suffix} ，并将查询结果按照创建时间升序排列
    *
    * @Param: [orderId, suffix, startDate, endDate]
    * @Return: java.util.List<cc.yugu.yhdw.common.entity.LocationInfo>
    * @Author By: zjn 2018/6/29  20:34
    */
    List<LocationInfo> findAllMap(@Param("orderId") String orderId, @Param("suffix") String suffix, @Param("startDate") Date startDate, @Param("endDate") Date endDate);
    /**
    * 查询表hdw_battery_report_log中的电池id，并按电池id分组
    *
    * @Param: []
    * @Return: java.util.List<java.lang.String>
    * @Author By: zjn 2018/6/29  20:34
    */
    public List<String> findBatteryId();
    /**
    * 根据表名查询表信息
    *
    * @Param: [tableName]
    * @Return: java.lang.String
    * @Author By: zjn 2018/6/29  20:34
    */
    String findTableExist(@Param("tableName") String tableName);
    /**
    * 按条件查询表hdw_battery_report_log_${suffix} ，并返回行数
    *
    * @Param: [orderId, suffix, startDate, endDate]
    * @Return: int
    * @Author By: zjn 2018/6/29  20:34
    */
    int findAllMapCount(@Param("orderId") String orderId, @Param("suffix") String suffix, @Param("startDate") Date startDate, @Param("endDate") Date endDate);
    /**
    * 只查询一条，按条件查询表hdw_battery_report_log_${suffix}中创建时间，并按照创建时间降序排列
    *
    * @Param: [orderId, suffix]
    * @Return: java.util.Date
    * @Author By: zjn 2018/6/29  20:34
    */
    Date findLastReportTime(@Param("orderId") String orderId, @Param("suffix") String suffix);
    /**
    * 分页查询，按条件查询表hdw_battery_report_log_${suffix}，并将结果按照创建时间升序排列
    *
    * @Param: [batteryOrderBatteryReportLog]
    * @Return: java.util.List<cc.yugu.yhdw.common.domain.hdw.BatteryReportLog>
    * @Author By: zjn 2018/6/29  20:34
    */
    List<BatteryReportLog> findSelectPageResult(BatteryReportLog batteryOrderBatteryReportLog);
    /**
    * 分页查询，按条件查询表hdw_battery_report_log_${suffix}，并将查询结果按照创建时间降序排列
    *
    * @Param: [batteryReportLog]
    * @Return: java.util.List<cc.yugu.yhdw.common.domain.hdw.BatteryReportLog>
    * @Author By: zjn 2018/6/29  20:34
    */
    public List<BatteryReportLog> findPageResult(BatteryReportLog batteryReportLog);
    /**
    * 按条件查询表hdw_battery_report_log中经纬度，并按照创建时间排序
    *
    * @Param: [batteryReportLog]
    * @Return: java.util.List<java.util.Map<java.lang.String,java.lang.Double>>
    * @Author By: zjn 2018/6/29  20:34
    */
    public List<Map<String, Double>> find(BatteryReportLog batteryReportLog);
    /**
    * 按条件查询表hdw_battery_report_log中订单id，并按照订单id分组，再按照创建时间降序排列
    *
    * @Param: [batteryId, bicycleNo]
    * @Return: java.util.List<java.lang.String>
    * @Author By: zjn 2018/6/29  20:34
    */
    public List<String> findOrderId(@Param("batteryId") String batteryId, @Param("bicycleNo") String bicycleNo);
    /**
    * 更新表hdw_battery_report_log_${suffix} 中地址
    *
    * @Param: [batteryReportLog]
    * @Return: int
    * @Author By: zjn 2018/6/29  20:35
    */
    int updateAddress(BatteryReportLog batteryReportLog);
    /**
     * 按条件查询表hdw_battery_report_log中经纬度，并按照创建时间排序(新增）
     * @Param [batteryReportLog]
     * @Return java.util.List<java.util.Map<java.lang.String,java.lang.Double>>
     * @Author zxj 2018/7/25
     */
    public List<Map<String, Double>> queryCoordinates(BatteryReportLog batteryReportLog);

}
